2. What are the differences between vCalendar and iCalendar?

The default character set for iCalendar is UTF-8 rather than ASCII. It is no longer possible to define a character set for an individual property; the same character set applies to the whole iCalendar object.

iCalendar has a default encoding of 8-bit; compared to vCalendar’s default of 7-bit. It is no longer necessary to indicate 8-bit content using property parameters. iCalendar data that needs to be transferred using protocols restricted to 7 bits should use a content transfer encoding such as Base64 or quoted-printable at the transport layer.

There are new file type extensions of ICS and IFB for iCalendar core components and free/busy information components. vCalendar’s file type extension of VCS is not used for identification of iCalendar data.

Property value data types such as date-time are specified in a more rigorous manner than in vCalendar; iCalendar also defines new property value data types such as ‘Calendar User Address’ to improve interoperability. iCalendar supports a more comprehensive set of property parameters to enable delegation of requests, alternative representations of data, and participant status. A full list of new property value data types and property value parameters is provided in Appendix A.

iCalendar defines eighteen new properties to support specification of time zones, calendaring and scheduling operations such as a canceling a meeting, non-Gregorian calendar scales, and other calendar attributes. A full list is provided in Appendix A.

iCalendar provides support for meeting requests/group scheduling with the new METHOD property. The scheduling protocol is a logical extension of iCalendar and is defined by RFC 2446 the iCalendar Transport-independent Interoperability Protocol (iTIP). There is no equivalent for vCalendar data.

The new RECURRENCE-ID property allows individual calendar instances to be linked together and enables powerful recurrence/exception handling.

iCalendar has proper support for time zones and can accurately represent entries in local time, UTC time and local time with a time zone specified. This is particularly important for repeating entries, which may span a daylight saving change. vCalendar alone cannot represent the same data correctly.

iCalendar supports repeat rules with a frequency of seconds, minutes and hours. These kinds of repeat rules cannot be represented in vCalendar.

In summary, the iCalendar specification is more detailed and more powerful; the iCalendar specification is 148 pages compared to vCalendar’s 47 pages. This means that there is less opportunity for implementers to misinterpret the specification’s calendar components and it is easier to develop conformance tests to verify a correct implementation of the standard.